typedef与using、struct与class的区别

typedef与using区别

  • 定义一般类型的别名没区别,都是用来简化代码。如typedef string::size_type str_sz,将string::size_type类型命名为str_sz,类型名在前,别名在后;而using的用法为using str_sz=string::size_type,别名在前,类型名在后;
  • 定义模板的别名,只能使用using。如:using cell = pair

struct与class的区别

  • 默认的数据成员访问权限
    struct是public的,class是private的。即不加访问限定符时,struct结构体内的成员默认都是共有的,可访问的(public),而class结构体内的成员默认私有(private),如:
struct student{
void getName(string _name);//默认public
void getAge(int _age);//默认public
private:
string name;
int age;
}

class student{
string name;//默认private
int age;//默认private
public:
void getName(string _name);
void getAge(int _age);
}
  • class可用于定义模板参数,就像“typename”。但struct不用于定义模板参数。

总的来说,struct和class一般情况下功能是差不多的,但我认为struct偏向于结构体(数据结构),而class更像定义一个对象,另外,虽然二者可以通过访问控制来分辨,但编程序时的优良习惯应该是加上访问控制符(public、private、protected),而不是靠默认,这样会增加代码的整洁性和易读性。

你可能感兴趣的:(C++,零碎相关)