#include <iostream.h>
class A
{
public:
int r;
void setdata(int a,int b)
{
t=a;
t=b;
}
int t;
};
void main()
{
A x={100,200};
cout<<x.r<<endl<<x.t;
}
请问在
void setdata(int a,int b)
{
t=a;
t=b;
}
1:t是在setdata下面的定义,为什么编译器没有报错????
2:还有在A x={100,200}; 如果没有直接初始化而是A x; x={100,200};这样为什么就错了??和结构体是一样的吗
第一个 那个 放在那里 都是 没关系的
第二个A x={100,200}; 你 创建对象的时候赋值 那样是 调用构造函数的 但是 你 类里面没有写构造函数 那样 系统 默认的是 无参的 构造函数 但是 你调用的是 有连个参数的 构造函数 那样 但让 会错的 解决 就是 你 再类里面写一个 带两个参数的 构造函数就好了
因为在内存中不会为该类分配保存空间的,而且它的顺序是没什么关系的!!以前的定义都是成员变量的写在最后面的 !!!
(2) A x;这产生一个对象,同时也会调用该类的构造函数!而你没有写而你没有构造函数,所以系统会自带一个{}的构造函数!,所以执行A a d 时候,同时也在内存中开辟的一块内存!
x={100,200};编译不认识这种方式的。
x.t
or x.r 应该这样!