什么是类定义形式的结构体变量
4个回答
展开全部
(解释非原创)
定义一个类,这个类里面只有数据成员。其实类在只有公有数据成员的时候和结构体几乎没什么两样
C++中的Struct和Class只有2点区别:
1.class中默认的成员访问权限是private的,而struct中则是public的。
2.从class继承默认是private继承,而从struct继承默认是public继承。
除此这外无任何区别。
关于cpp中的结构体,它也支持 virtual,支持继承,但是,我并不用它,
没必要将结构体和类两个概念混用。增加自己的烦恼而已,
除非,你想在整个都是c风格的项目中的某些地方用封装,多态等oo的特性,而保持风格一致。 此外,可以用大括号的形式初始化的。
/************************实例一*****************************/
#include <cstdlib>
#include <iostream>
using namespace std;
struct ST
{
ST()
{
a=0;
b=0;
}
ST(int i,int j )
{
a=i;
b=j;
cout<<"\n ST init a="<<a;
}
int a;
int b;
};
int main(int argc, char *argv[])
{
{
struct ST st[2]={ST(1,3),ST(10,20)};
cout<<"\n now st[0]"<<st[0].a;
cout<<"\n now st[1]"<<st[1].a;
}
system("PAUSE");
return EXIT_SUCCESS;
}
/************************实例二*****************************/
#include <iostream>
struct Test {
//private:
Test() { std::cout << "Test." << std::endl; }
virtual v_proc(){std::cout << "Test.v_proc." << std::endl; }
~Test() { std::cout << "~Test." << std::endl; }
int operator +(const int a){return a+1;}
};
struct Test_CH : public Test
{
//private:
Test_CH() { std::cout << "Test_CH." << std::endl; }
virtual v_proc(){std::cout << "Test_CH.v_proc." << std::endl; }
~Test_CH() { std::cout << "~Test_CH." << std::endl; }
};
class CTest {
public:
CTest(){std::cout << "CTest." << std::endl;}
~CTest(){std::cout << "~CTest." << std::endl;}
};
int main() {
Test *o_Test;
o_Test=new Test;
o_Test->v_proc();
std::cout << "o_Test->operator +(5)="<<o_Test->operator+(5)<< std::endl;
delete o_Test;
Test_CH *o_Test_CH;
o_Test_CH=new Test_CH;
o_Test_CH->v_proc();
std::cout << "o_Test_CH->operator +(6)="<<o_Test_CH->operator+(6)<< std::endl;
delete o_Test_CH;
CTest *o_CTest;
o_CTest=new CTest;
delete o_CTest;
return 0;
}
定义一个类,这个类里面只有数据成员。其实类在只有公有数据成员的时候和结构体几乎没什么两样
C++中的Struct和Class只有2点区别:
1.class中默认的成员访问权限是private的,而struct中则是public的。
2.从class继承默认是private继承,而从struct继承默认是public继承。
除此这外无任何区别。
关于cpp中的结构体,它也支持 virtual,支持继承,但是,我并不用它,
没必要将结构体和类两个概念混用。增加自己的烦恼而已,
除非,你想在整个都是c风格的项目中的某些地方用封装,多态等oo的特性,而保持风格一致。 此外,可以用大括号的形式初始化的。
/************************实例一*****************************/
#include <cstdlib>
#include <iostream>
using namespace std;
struct ST
{
ST()
{
a=0;
b=0;
}
ST(int i,int j )
{
a=i;
b=j;
cout<<"\n ST init a="<<a;
}
int a;
int b;
};
int main(int argc, char *argv[])
{
{
struct ST st[2]={ST(1,3),ST(10,20)};
cout<<"\n now st[0]"<<st[0].a;
cout<<"\n now st[1]"<<st[1].a;
}
system("PAUSE");
return EXIT_SUCCESS;
}
/************************实例二*****************************/
#include <iostream>
struct Test {
//private:
Test() { std::cout << "Test." << std::endl; }
virtual v_proc(){std::cout << "Test.v_proc." << std::endl; }
~Test() { std::cout << "~Test." << std::endl; }
int operator +(const int a){return a+1;}
};
struct Test_CH : public Test
{
//private:
Test_CH() { std::cout << "Test_CH." << std::endl; }
virtual v_proc(){std::cout << "Test_CH.v_proc." << std::endl; }
~Test_CH() { std::cout << "~Test_CH." << std::endl; }
};
class CTest {
public:
CTest(){std::cout << "CTest." << std::endl;}
~CTest(){std::cout << "~CTest." << std::endl;}
};
int main() {
Test *o_Test;
o_Test=new Test;
o_Test->v_proc();
std::cout << "o_Test->operator +(5)="<<o_Test->operator+(5)<< std::endl;
delete o_Test;
Test_CH *o_Test_CH;
o_Test_CH=new Test_CH;
o_Test_CH->v_proc();
std::cout << "o_Test_CH->operator +(6)="<<o_Test_CH->operator+(6)<< std::endl;
delete o_Test_CH;
CTest *o_CTest;
o_CTest=new CTest;
delete o_CTest;
return 0;
}
追问
大哥,这个我早看过了,不懂,就想你举个例子说明一下
追答
eg
类中无成员函数
template
class class1
{public:
int a;
double b;
T c;
.
.
}
template
struct struct1
{
int a;
double b;
T c;
}
很明显可以当作结构体使用:
classs; 结构体则struct1 s;效果相同·
但类中若无public:
默认为private: 外界无法调用变量a b c...
展开全部
语法都是了解的, 只是在用途上有些不同
定义与权限都是固定的
一般的用法是, 对struct,可以当作纯粹的存储类, 当类之间通信的时候传递复杂参数使用
定义与权限都是固定的
一般的用法是, 对struct,可以当作纯粹的存储类, 当类之间通信的时候传递复杂参数使用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
语法都是了解的, 只是在用途上有些不同
定义与权限都是固定的
一般的用法是, 对struct,可以当作纯粹的存储类, 当类之间通信的时候传递复杂参数使用.
定义与权限都是固定的
一般的用法是, 对struct,可以当作纯粹的存储类, 当类之间通信的时候传递复杂参数使用.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
语法都是了解的, 只是在用途上有些不同
定义与权限都是固定的
一般的用法是, 对struct,可以当作纯粹的存储类, 当类之间通信的时候传递复杂参数使用
定义与权限都是固定的
一般的用法是, 对struct,可以当作纯粹的存储类, 当类之间通信的时候传递复杂参数使用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询