首页 > 程序开发 > 软件开发 > C++ >

Effective C++读书笔记(0)

2012-02-04

美国联邦调查局(FBI)局长罗伯特·米勒2日表示,在不远的未来,网络恐怖主义会成为与当前恐怖主义模式相当或更严重的威胁。 米勒当天在参议院举行的关于全球威胁的听证会上警告说,FBI和其他情报机构应改变结构,...

美国联邦调查局(FBI)局长罗伯特·米勒2日表示,在不远的未来,网络恐怖主义会成为与当前恐怖主义模式相当或更严重的威胁。

米勒当天在参议院举行的关于全球威胁的听证会上警告说,FBI和其他情报机构应改变结构,以应对这类日益严重的威胁。

米勒说:“关于互联网目前我们做得很少。侵犯知识产权、窃取研发成果、窃取企业发展方案和计划等,所有这些事件都很容易被攻击者利用。”

他还表示,情报机构应该像9·11恐怖袭击后那样“共享信息”。他强调说:“我们必须建立应对此类威胁的共同机制,就像9·11后我们所做的那样,打破部门间的藩篱。”

米勒希望国会能通过一项应对网络恐怖主义威胁的法案,把调查和情报机构变成“信息接收者”。他说,这将有助于FBI和其他机构分享关于某个案件的信息。

米勒在周二举行的一次听证会上曾警告说,应把网络恐怖主义、黑客攻击、战略网络的脆弱性对美国构成的威胁放在头等重要的位置。

他说,制止恐怖主义袭击是FBI当前的首要任务,但未来网络威胁将成为美国最大的安全问题。 作为明年7月入职的职场新人,虽然大学里写了不少project,但实战经验匮乏,实在不是什么牛人。所以还是笨鸟先飞,在一段非常闲适的日子里买来了Effective C++,想进一步提升自我,在入职前打好基础,特此边研读边做笔记一份,有摘录有总结有自己的一些理解。我知道这玩意儿基本没什么人观摩,但万一有人走过路过,望不吝赐教。



Start

声明式(Declaration):告诉编译器某个东西的名称和类型,但略去细节。

std::size_t numDigits(int number);

每个函数的声明揭示其声明式:参数&返回类型

如上numDigits函数的签名是std::size_t(int),也就是说"这函数获得一个int 并返回一个std::size_t"。



定义式(Definition):提供编译器一些声明式所遗漏的细节。

定义式为对象分配内存;为function提供代码本体,为class列出其成员(构造)。

class Widget {

public:

Widget();

~Widget();

...

};




template<typenameT>

class GraphNode{

public:

GraphNode();

~GraphNode();

...

};




初始化(Initialization):给予对象初值。

用户自定义类型对象的初始化由构造函数执行;default构造函数要么没有参数,要么每个参数都有缺省值。

class A {

public:

explicit A (int x=0, bool b=true);

};

void doSth (A aObject);

A obj (28); //Right,根据28创建A,第二个参数bool被缺省为true

doSth(28); //Wrong,应该传入参数A,int与A之间不能隐式转换

doSth(A(28)); //Right, cast显式转换

用explicit声明构造函数,阻止了参数隐式类型转换的执行,但仍可进行显式类型转换;因此,除非有隐式转换需要,否则构造函数被鼓励声明为explicit。



copy构造函数:以同型对象初始化自我对象,构造函数的参数为另一同类型对象;

copyassignment操作符:从另一个同型对象中拷贝其值到自我对象,其实就是等号赋值。

class Widget

{

public:

Widget(); //default构造函数

Widget(const Widget& rhs); //copy构造函数

Widget& operator=(const Widget&rhs); //copy assignment操作符

...

};

Widget w1; //call the defaultconstructor

Widget w2(w1); //call the copyconstructor

w1 = w2; //call the copy assignment operator

Then:

Widget w3 =w2;

先用copy构造函数创建w3,再用w2(已定义的)进行等号赋值;值传递就意味着调用copy构造函数。



STL:标准模板库(Standard Template Library),C++标准程序库的一部分,致力于容器(vector,list,set,map,等等),迭代器(vector<int>::iterator,set<string>::iterator,等等), 算法(for_each,find,sort,等等)。



不明确行为(undefined behavior):某些C++构件的行为没有定义,无法稳定估计运行期会发生什么。

int *p = 0; // p为null指针

std::cout << *p; //对null指针取值



char name[] = "Darla";// name数组大小为6(尾端为null)

char c = name[10]; //指向一个无效的数组索引

尽可能避开不明确行为。

摘自 pandawuwyj的专栏
相关文章
最新文章
热点推荐