希望大家能抽出一点点时间就可以帮我这个菜鸟解决很大的困惑了,~~~从心底感谢你们!!:)
顺祝 身体健康,元旦快乐 新年新气象~~`UP有分(1分):)
第一题:
#include <iostream.h>
class M
{
public:
M(){a=b=0;} ;
M(int i,int j){a=i;b=j;};
void print(){cout<<a<<","<<b<<endl;};
private:int a,b;}
void main()
{
M m[2][4]; //调用哪个构造函数?这里不明白
int x=10,y=10;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++) m[i][j]=M(i+=2,j+=10);
M(*pm)[4](m); //这句也不明白什么意思
for(int i=0;i<2;i++)
{cout endl;
for(int j=0;j<4;j++) (*(*(pm+i)+j)) //这句呢(*(*(pm+i)+j)),我最怵带很多*
print();} //号的题目了,*号一是说指针,另个是取址
cout<<endl; //还有别的意思吗,比如 M(*pm)??
}
第二题:
class student
{
public:
student(char *pName="no name")
{
strncpy(name,pName,sizeof(name));
name[sizeof(name)-1]="\0";
}
protected:
char name[40];
};
void fn(int noOfObjects)
{
student *ps=new student[noOfObjects]; //student[noOfObjects]--这句什么意思,还有就是分 //省略 //配堆对象这块不是很明白,能详细解释一下吗?谢谢
delete[]ps;
}
谢谢大家了,真的!!!
14 个解决方案
#1
穷学生一个
C++学的不好
但是喜欢
请各位帮忙了~:)
C++学的不好
但是喜欢
请各位帮忙了~:)
#2
会用vc设断点,调试吗?
#3
M m[2][4]; // 调用缺省构造函数
M(*pm)[4](m); // pm 的类型是: M(*)[4] (也就是指向一个数组的指针,用 m 初始化)
(*(*(pm+i)+j)) 相当于 pm[i][j]
M(*pm)[4](m); // pm 的类型是: M(*)[4] (也就是指向一个数组的指针,用 m 初始化)
(*(*(pm+i)+j)) 相当于 pm[i][j]
#4
M m[2][4] 调用的是没有参数的构造函数
这里的作用是 定义一个2*4的矩阵 里面的元素为 struct类型的
但是 没有传构造函数的参数
M(*pm)[4](m) 这句 不懂
(*(*(pm+i)+j)) 是求数组的第 i行j列的元素
new 的作用是开辟一块new后面跟的 数据类型的空间
可以是基本数据类型 可以是自己定义的数据类型 这里是struct类型的
new的返回值是 开辟的空间的指针 就是这个指针是指向开辟的空间的
返回值类型 必须与开辟的空间的类型一致
eg
int *p;
p=new int;
这里的作用是 定义一个2*4的矩阵 里面的元素为 struct类型的
但是 没有传构造函数的参数
M(*pm)[4](m) 这句 不懂
(*(*(pm+i)+j)) 是求数组的第 i行j列的元素
new 的作用是开辟一块new后面跟的 数据类型的空间
可以是基本数据类型 可以是自己定义的数据类型 这里是struct类型的
new的返回值是 开辟的空间的指针 就是这个指针是指向开辟的空间的
返回值类型 必须与开辟的空间的类型一致
eg
int *p;
p=new int;
#5
等了半天也不见人,希望明天来的时候……
顺便问一下这个题,这个题很简单,就是我不知道为什么运行不了~~报错信息如下:
我用的是C++build
#include <iostream.h>
class MyClass
{
public:
MyClass();
MyClass(int);
~MyClass();
void Display();
protected:
int number;
}
MyClass::MyClass()
{
cout<<"Constructing normally\n";
}
MyClass::MyClass(int m)
{
number=m;
cout<<"Constructing with a number:"<<number<<endl;
}
void MyClass::Display()
{
cout<<"Display a number:"<<number<<endl;
}
MyClass::~MyClass()
{
cout<<"Destructing \n";
}
void main()
{
MyClass obj1;
MyClass obj2(20);
obj1.Display();
obj2.Display();
}
抱错信息如下:
[C++ Error] Unit1.cpp(15): E2111 Type 'MyClass' may not be defined here
[C++ Error] Unit1.cpp(15): E2136 Constructor cannot have a return type specification
但是,我的那个MyClass()已经定义了啊,为什么报这中错呢?
谢谢回答我问题的所有同志们!!!
顺便问一下这个题,这个题很简单,就是我不知道为什么运行不了~~报错信息如下:
我用的是C++build
#include <iostream.h>
class MyClass
{
public:
MyClass();
MyClass(int);
~MyClass();
void Display();
protected:
int number;
}
MyClass::MyClass()
{
cout<<"Constructing normally\n";
}
MyClass::MyClass(int m)
{
number=m;
cout<<"Constructing with a number:"<<number<<endl;
}
void MyClass::Display()
{
cout<<"Display a number:"<<number<<endl;
}
MyClass::~MyClass()
{
cout<<"Destructing \n";
}
void main()
{
MyClass obj1;
MyClass obj2(20);
obj1.Display();
obj2.Display();
}
抱错信息如下:
[C++ Error] Unit1.cpp(15): E2111 Type 'MyClass' may not be defined here
[C++ Error] Unit1.cpp(15): E2136 Constructor cannot have a return type specification
但是,我的那个MyClass()已经定义了啊,为什么报这中错呢?
谢谢回答我问题的所有同志们!!!
#6
类的定义后面好象是少了一个 分号!
#7
class MyClass
{
public:
MyClass();
MyClass(int);
~MyClass();
void Display();
protected:
int number;
};//此处要有分号,一个很小的疏忽。很多人都记不住
{
public:
MyClass();
MyClass(int);
~MyClass();
void Display();
protected:
int number;
};//此处要有分号,一个很小的疏忽。很多人都记不住
#8
你的几个问题都是由于同一个原因,即声明一个类后要加分号.
#9
up
#10
(*(*(pm+i)+j)) 就是pm[i][j],*(a+i)就是a[i]
#11
up
#12
M m[2][4] 调用的是没有参数的构造函数
M(*pm)[4](m); // pm M类型的指针指向一个数组,其大小为4(用 m 初始化)
(*(*(pm+i)+j)) 相当于 pm[i][j]
student *ps=new student[noOfObjects]; 指针ps指向一个新的内存分配区,大小为noOfObjects个 student;
M(*pm)[4](m); // pm M类型的指针指向一个数组,其大小为4(用 m 初始化)
(*(*(pm+i)+j)) 相当于 pm[i][j]
student *ps=new student[noOfObjects]; 指针ps指向一个新的内存分配区,大小为noOfObjects个 student;
#13
怎么没有见pm在那里定义的?
m是 2*4 的
怎么被 [4] 这样的数组初始化了?
不懂
m是 2*4 的
怎么被 [4] 这样的数组初始化了?
不懂
#14
#include <iostream.h>
class M
{
public:
M(){a=b=0;} ;
M(int i,int j){a=i;b=j;};
void print(){cout<<a<<","<<b<<endl;};
private:int a,b;} //这里少了个;吧!
void main()
{
M m[2][4]; //调用 M(){a=b=0;}
int x=10,y=10;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++) m[i][j]=M(i+=2,j+=10);
M(*pm)[4](m); //相当与 M (*pm)[4]=m,pm是数组的行指针
for(int i=0;i<2;i++)
{cout endl;
for(int j=0;j<4;j++) (*(*(pm+i)+j)) //应为是二远数组有行列指针之分,这里等价与pm[i][j]
print();} cout<<endl;
}
第二题:
class student
{
public:
student(char *pName="no name")
{
strncpy(name,pName,sizeof(name));
name[sizeof(name)-1]="\0";
}
protected:
char name[40];
};
void fn(int string)//把noOfObjects换成string是不是好看些
{
student *ps=new student[string];//这里是建一个指针对象ps,调用构造函数
//student(char *pName=string)
delete[]ps;
}
你下一个程序,上面的兄弟说得很清楚,少了;
class M
{
public:
M(){a=b=0;} ;
M(int i,int j){a=i;b=j;};
void print(){cout<<a<<","<<b<<endl;};
private:int a,b;} //这里少了个;吧!
void main()
{
M m[2][4]; //调用 M(){a=b=0;}
int x=10,y=10;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++) m[i][j]=M(i+=2,j+=10);
M(*pm)[4](m); //相当与 M (*pm)[4]=m,pm是数组的行指针
for(int i=0;i<2;i++)
{cout endl;
for(int j=0;j<4;j++) (*(*(pm+i)+j)) //应为是二远数组有行列指针之分,这里等价与pm[i][j]
print();} cout<<endl;
}
第二题:
class student
{
public:
student(char *pName="no name")
{
strncpy(name,pName,sizeof(name));
name[sizeof(name)-1]="\0";
}
protected:
char name[40];
};
void fn(int string)//把noOfObjects换成string是不是好看些
{
student *ps=new student[string];//这里是建一个指针对象ps,调用构造函数
//student(char *pName=string)
delete[]ps;
}
你下一个程序,上面的兄弟说得很清楚,少了;
#1
穷学生一个
C++学的不好
但是喜欢
请各位帮忙了~:)
C++学的不好
但是喜欢
请各位帮忙了~:)
#2
会用vc设断点,调试吗?
#3
M m[2][4]; // 调用缺省构造函数
M(*pm)[4](m); // pm 的类型是: M(*)[4] (也就是指向一个数组的指针,用 m 初始化)
(*(*(pm+i)+j)) 相当于 pm[i][j]
M(*pm)[4](m); // pm 的类型是: M(*)[4] (也就是指向一个数组的指针,用 m 初始化)
(*(*(pm+i)+j)) 相当于 pm[i][j]
#4
M m[2][4] 调用的是没有参数的构造函数
这里的作用是 定义一个2*4的矩阵 里面的元素为 struct类型的
但是 没有传构造函数的参数
M(*pm)[4](m) 这句 不懂
(*(*(pm+i)+j)) 是求数组的第 i行j列的元素
new 的作用是开辟一块new后面跟的 数据类型的空间
可以是基本数据类型 可以是自己定义的数据类型 这里是struct类型的
new的返回值是 开辟的空间的指针 就是这个指针是指向开辟的空间的
返回值类型 必须与开辟的空间的类型一致
eg
int *p;
p=new int;
这里的作用是 定义一个2*4的矩阵 里面的元素为 struct类型的
但是 没有传构造函数的参数
M(*pm)[4](m) 这句 不懂
(*(*(pm+i)+j)) 是求数组的第 i行j列的元素
new 的作用是开辟一块new后面跟的 数据类型的空间
可以是基本数据类型 可以是自己定义的数据类型 这里是struct类型的
new的返回值是 开辟的空间的指针 就是这个指针是指向开辟的空间的
返回值类型 必须与开辟的空间的类型一致
eg
int *p;
p=new int;
#5
等了半天也不见人,希望明天来的时候……
顺便问一下这个题,这个题很简单,就是我不知道为什么运行不了~~报错信息如下:
我用的是C++build
#include <iostream.h>
class MyClass
{
public:
MyClass();
MyClass(int);
~MyClass();
void Display();
protected:
int number;
}
MyClass::MyClass()
{
cout<<"Constructing normally\n";
}
MyClass::MyClass(int m)
{
number=m;
cout<<"Constructing with a number:"<<number<<endl;
}
void MyClass::Display()
{
cout<<"Display a number:"<<number<<endl;
}
MyClass::~MyClass()
{
cout<<"Destructing \n";
}
void main()
{
MyClass obj1;
MyClass obj2(20);
obj1.Display();
obj2.Display();
}
抱错信息如下:
[C++ Error] Unit1.cpp(15): E2111 Type 'MyClass' may not be defined here
[C++ Error] Unit1.cpp(15): E2136 Constructor cannot have a return type specification
但是,我的那个MyClass()已经定义了啊,为什么报这中错呢?
谢谢回答我问题的所有同志们!!!
顺便问一下这个题,这个题很简单,就是我不知道为什么运行不了~~报错信息如下:
我用的是C++build
#include <iostream.h>
class MyClass
{
public:
MyClass();
MyClass(int);
~MyClass();
void Display();
protected:
int number;
}
MyClass::MyClass()
{
cout<<"Constructing normally\n";
}
MyClass::MyClass(int m)
{
number=m;
cout<<"Constructing with a number:"<<number<<endl;
}
void MyClass::Display()
{
cout<<"Display a number:"<<number<<endl;
}
MyClass::~MyClass()
{
cout<<"Destructing \n";
}
void main()
{
MyClass obj1;
MyClass obj2(20);
obj1.Display();
obj2.Display();
}
抱错信息如下:
[C++ Error] Unit1.cpp(15): E2111 Type 'MyClass' may not be defined here
[C++ Error] Unit1.cpp(15): E2136 Constructor cannot have a return type specification
但是,我的那个MyClass()已经定义了啊,为什么报这中错呢?
谢谢回答我问题的所有同志们!!!
#6
类的定义后面好象是少了一个 分号!
#7
class MyClass
{
public:
MyClass();
MyClass(int);
~MyClass();
void Display();
protected:
int number;
};//此处要有分号,一个很小的疏忽。很多人都记不住
{
public:
MyClass();
MyClass(int);
~MyClass();
void Display();
protected:
int number;
};//此处要有分号,一个很小的疏忽。很多人都记不住
#8
你的几个问题都是由于同一个原因,即声明一个类后要加分号.
#9
up
#10
(*(*(pm+i)+j)) 就是pm[i][j],*(a+i)就是a[i]
#11
up
#12
M m[2][4] 调用的是没有参数的构造函数
M(*pm)[4](m); // pm M类型的指针指向一个数组,其大小为4(用 m 初始化)
(*(*(pm+i)+j)) 相当于 pm[i][j]
student *ps=new student[noOfObjects]; 指针ps指向一个新的内存分配区,大小为noOfObjects个 student;
M(*pm)[4](m); // pm M类型的指针指向一个数组,其大小为4(用 m 初始化)
(*(*(pm+i)+j)) 相当于 pm[i][j]
student *ps=new student[noOfObjects]; 指针ps指向一个新的内存分配区,大小为noOfObjects个 student;
#13
怎么没有见pm在那里定义的?
m是 2*4 的
怎么被 [4] 这样的数组初始化了?
不懂
m是 2*4 的
怎么被 [4] 这样的数组初始化了?
不懂
#14
#include <iostream.h>
class M
{
public:
M(){a=b=0;} ;
M(int i,int j){a=i;b=j;};
void print(){cout<<a<<","<<b<<endl;};
private:int a,b;} //这里少了个;吧!
void main()
{
M m[2][4]; //调用 M(){a=b=0;}
int x=10,y=10;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++) m[i][j]=M(i+=2,j+=10);
M(*pm)[4](m); //相当与 M (*pm)[4]=m,pm是数组的行指针
for(int i=0;i<2;i++)
{cout endl;
for(int j=0;j<4;j++) (*(*(pm+i)+j)) //应为是二远数组有行列指针之分,这里等价与pm[i][j]
print();} cout<<endl;
}
第二题:
class student
{
public:
student(char *pName="no name")
{
strncpy(name,pName,sizeof(name));
name[sizeof(name)-1]="\0";
}
protected:
char name[40];
};
void fn(int string)//把noOfObjects换成string是不是好看些
{
student *ps=new student[string];//这里是建一个指针对象ps,调用构造函数
//student(char *pName=string)
delete[]ps;
}
你下一个程序,上面的兄弟说得很清楚,少了;
class M
{
public:
M(){a=b=0;} ;
M(int i,int j){a=i;b=j;};
void print(){cout<<a<<","<<b<<endl;};
private:int a,b;} //这里少了个;吧!
void main()
{
M m[2][4]; //调用 M(){a=b=0;}
int x=10,y=10;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++) m[i][j]=M(i+=2,j+=10);
M(*pm)[4](m); //相当与 M (*pm)[4]=m,pm是数组的行指针
for(int i=0;i<2;i++)
{cout endl;
for(int j=0;j<4;j++) (*(*(pm+i)+j)) //应为是二远数组有行列指针之分,这里等价与pm[i][j]
print();} cout<<endl;
}
第二题:
class student
{
public:
student(char *pName="no name")
{
strncpy(name,pName,sizeof(name));
name[sizeof(name)-1]="\0";
}
protected:
char name[40];
};
void fn(int string)//把noOfObjects换成string是不是好看些
{
student *ps=new student[string];//这里是建一个指针对象ps,调用构造函数
//student(char *pName=string)
delete[]ps;
}
你下一个程序,上面的兄弟说得很清楚,少了;